import java.net.DatagramPacket;
import java.net.InetAddress;
import java.net.MulticastSocket;
import java.net.ServerSocket;
import java.net.Socket;
import java.nio.charset.Charset;
import java.util.ArrayList;
import javax.swing.JOptionPane;

import com.sun.media.sound.MidiUtils.TempoCache;

import br.com.BRisa.upnp.MSEARCH;
import br.com.BRisa.upnp.Sockets;
import br.com.BRisa.upnp.upnp_default;
import br.com.BRisa.util.Log;


public class Teste {

	public static void main(String[] args) {
          
		ArrayList<String> Lista = new ArrayList<String>();
		int Opção = JOptionPane.showConfirmDialog(null, "Deseja Procurar Dispositivo?");
		while(Opção == 0){
			try{
				
			String msgtoBrisaMediaServer = "Connect";
			int port = upnp_default.SSDP_PORT;
			MulticastSocket porta = new MulticastSocket(port);
            String End = upnp_default.SSDP_ADDR;
            InetAddress grupo = InetAddress.getByName(End);
            porta.joinGroup(grupo);
            
            byte rec[] = new byte[256];
			DatagramPacket pct = new DatagramPacket(rec, rec.length, grupo,
					port);
			System.out.println("Tamanho: " + rec.length);
			porta.receive(pct);
			String data = new String(pct.getData());
			porta.send(pct);
			Log.info(data);
			JOptionPane.showMessageDialog(null, data);
			Lista.add(data);
			MSEARCH.Start(600, "ssdp:all");
			Sockets.open();
			Sockets.Send(msgtoBrisaMediaServer, End, port);
			for (int x = 1; x < Lista.size(); x++) {

				JOptionPane.showMessageDialog(null, Lista);
				
			}
			Opção = JOptionPane.showConfirmDialog(null, "Deseja Procurar Dispositivo?");
			}catch(Exception e) {
				System.out.println("Erro: " + e.getMessage());
				Log.Warning("Brisa Adverte", e);
		}
		
		
	}if(Opção == 1 || Opção == 2){
			  
		Sockets.close();
        System.exit(0);
        JOptionPane.showMessageDialog(null,
		"Bye, Bye. Lista de Dipositivo Desconectado");
	}

  }
}